This notebook contains code to create all the main and supplementary figures in Bartusek et al., 2023 ("Higher-resolution tropopause folding accounts for more stratospheric ozone intrusions", Geophys. Res. Lett.). The folding algorithm and compositing scripts that are also in this code repository are necessary to generate some of the data that this notebook uses. Samuel Bartusek, March 2023
import numpy as np
from numpy import diff
import xarray as xr
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import ticker
from matplotlib import cm
import matplotlib.cm
from matplotlib.colors import ListedColormap
from matplotlib import colors
import cartopy.crs as ccrs
import cartopy
from cartopy.util import add_cyclic_point
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import scipy
import scipy.stats as ss
from scipy.interpolate import griddata
from scipy.signal import argrelmin
from scipy.ndimage import interpolation
import scipy.signal
import dask.diagnostics as dd
import dask.array as da
from dask.diagnostics import ProgressBar
pbar = ProgressBar()
import xskillscore
import gc
import glob
import re
import copy
import datetime
import time
import os
import math
import pickle
# modify turbo colormap:
turbo_colormap_data = [[0.18995,0.07176,0.23217],[0.19483,0.08339,0.26149],[0.19956,0.09498,0.29024],[0.20415,0.10652,0.31844],[0.20860,0.11802,0.34607],[0.21291,0.12947,0.37314],[0.21708,0.14087,0.39964],[0.22111,0.15223,0.42558],[0.22500,0.16354,0.45096],[0.22875,0.17481,0.47578],[0.23236,0.18603,0.50004],[0.23582,0.19720,0.52373],[0.23915,0.20833,0.54686],[0.24234,0.21941,0.56942],[0.24539,0.23044,0.59142],[0.24830,0.24143,0.61286],[0.25107,0.25237,0.63374],[0.25369,0.26327,0.65406],[0.25618,0.27412,0.67381],[0.25853,0.28492,0.69300],[0.26074,0.29568,0.71162],[0.26280,0.30639,0.72968],[0.26473,0.31706,0.74718],[0.26652,0.32768,0.76412],[0.26816,0.33825,0.78050],[0.26967,0.34878,0.79631],[0.27103,0.35926,0.81156],[0.27226,0.36970,0.82624],[0.27334,0.38008,0.84037],[0.27429,0.39043,0.85393],[0.27509,0.40072,0.86692],[0.27576,0.41097,0.87936],[0.27628,0.42118,0.89123],[0.27667,0.43134,0.90254],[0.27691,0.44145,0.91328],[0.27701,0.45152,0.92347],[0.27698,0.46153,0.93309],[0.27680,0.47151,0.94214],[0.27648,0.48144,0.95064],[0.27603,0.49132,0.95857],[0.27543,0.50115,0.96594],[0.27469,0.51094,0.97275],[0.27381,0.52069,0.97899],[0.27273,0.53040,0.98461],[0.27106,0.54015,0.98930],[0.26878,0.54995,0.99303],[0.26592,0.55979,0.99583],[0.26252,0.56967,0.99773],[0.25862,0.57958,0.99876],[0.25425,0.58950,0.99896],[0.24946,0.59943,0.99835],[0.24427,0.60937,0.99697],[0.23874,0.61931,0.99485],[0.23288,0.62923,0.99202],[0.22676,0.63913,0.98851],[0.22039,0.64901,0.98436],[0.21382,0.65886,0.97959],[0.20708,0.66866,0.97423],[0.20021,0.67842,0.96833],[0.19326,0.68812,0.96190],[0.18625,0.69775,0.95498],[0.17923,0.70732,0.94761],[0.17223,0.71680,0.93981],[0.16529,0.72620,0.93161],[0.15844,0.73551,0.92305],[0.15173,0.74472,0.91416],[0.14519,0.75381,0.90496],[0.13886,0.76279,0.89550],[0.13278,0.77165,0.88580],[0.12698,0.78037,0.87590],[0.12151,0.78896,0.86581],[0.11639,0.79740,0.85559],[0.11167,0.80569,0.84525],[0.10738,0.81381,0.83484],[0.10357,0.82177,0.82437],[0.10026,0.82955,0.81389],[0.09750,0.83714,0.80342],[0.09532,0.84455,0.79299],[0.09377,0.85175,0.78264],[0.09287,0.85875,0.77240],[0.09267,0.86554,0.76230],[0.09320,0.87211,0.75237],[0.09451,0.87844,0.74265],[0.09662,0.88454,0.73316],[0.09958,0.89040,0.72393],[0.10342,0.89600,0.71500],[0.10815,0.90142,0.70599],[0.11374,0.90673,0.69651],[0.12014,0.91193,0.68660],[0.12733,0.91701,0.67627],[0.13526,0.92197,0.66556],[0.14391,0.92680,0.65448],[0.15323,0.93151,0.64308],[0.16319,0.93609,0.63137],[0.17377,0.94053,0.61938],[0.18491,0.94484,0.60713],[0.19659,0.94901,0.59466],[0.20877,0.95304,0.58199],[0.22142,0.95692,0.56914],[0.23449,0.96065,0.55614],[0.24797,0.96423,0.54303],[0.26180,0.96765,0.52981],[0.27597,0.97092,0.51653],[0.29042,0.97403,0.50321],[0.30513,0.97697,0.48987],[0.32006,0.97974,0.47654],[0.33517,0.98234,0.46325],[0.35043,0.98477,0.45002],[0.36581,0.98702,0.43688],[0.38127,0.98909,0.42386],[0.39678,0.99098,0.41098],[0.41229,0.99268,0.39826],[0.42778,0.99419,0.38575],[0.44321,0.99551,0.37345],[0.45854,0.99663,0.36140],[0.47375,0.99755,0.34963],[0.48879,0.99828,0.33816],[0.50362,0.99879,0.32701],[0.51822,0.99910,0.31622],[0.53255,0.99919,0.30581],[0.54658,0.99907,0.29581],[0.56026,0.99873,0.28623],[0.57357,0.99817,0.27712],[0.58646,0.99739,0.26849],[0.59891,0.99638,0.26038],[0.61088,0.99514,0.25280],[0.62233,0.99366,0.24579],[0.63323,0.99195,0.23937],[0.64362,0.98999,0.23356],[0.65394,0.98775,0.22835],[0.66428,0.98524,0.22370],[0.67462,0.98246,0.21960],[0.68494,0.97941,0.21602],[0.69525,0.97610,0.21294],[0.70553,0.97255,0.21032],[0.71577,0.96875,0.20815],[0.72596,0.96470,0.20640],[0.73610,0.96043,0.20504],[0.74617,0.95593,0.20406],[0.75617,0.95121,0.20343],[0.76608,0.94627,0.20311],[0.77591,0.94113,0.20310],[0.78563,0.93579,0.20336],[0.79524,0.93025,0.20386],[0.80473,0.92452,0.20459],[0.81410,0.91861,0.20552],[0.82333,0.91253,0.20663],[0.83241,0.90627,0.20788],[0.84133,0.89986,0.20926],[0.85010,0.89328,0.21074],[0.85868,0.88655,0.21230],[0.86709,0.87968,0.21391],[0.87530,0.87267,0.21555],[0.88331,0.86553,0.21719],[0.89112,0.85826,0.21880],[0.89870,0.85087,0.22038],[0.90605,0.84337,0.22188],[0.91317,0.83576,0.22328],[0.92004,0.82806,0.22456],[0.92666,0.82025,0.22570],[0.93301,0.81236,0.22667],[0.93909,0.80439,0.22744],[0.94489,0.79634,0.22800],[0.95039,0.78823,0.22831],[0.95560,0.78005,0.22836],[0.96049,0.77181,0.22811],[0.96507,0.76352,0.22754],[0.96931,0.75519,0.22663],[0.97323,0.74682,0.22536],[0.97679,0.73842,0.22369],[0.98000,0.73000,0.22161],[0.98289,0.72140,0.21918],[0.98549,0.71250,0.21650],[0.98781,0.70330,0.21358],[0.98986,0.69382,0.21043],[0.99163,0.68408,0.20706],[0.99314,0.67408,0.20348],[0.99438,0.66386,0.19971],[0.99535,0.65341,0.19577],[0.99607,0.64277,0.19165],[0.99654,0.63193,0.18738],[0.99675,0.62093,0.18297],[0.99672,0.60977,0.17842],[0.99644,0.59846,0.17376],[0.99593,0.58703,0.16899],[0.99517,0.57549,0.16412],[0.99419,0.56386,0.15918],[0.99297,0.55214,0.15417],[0.99153,0.54036,0.14910],[0.98987,0.52854,0.14398],[0.98799,0.51667,0.13883],[0.98590,0.50479,0.13367],[0.98360,0.49291,0.12849],[0.98108,0.48104,0.12332],[0.97837,0.46920,0.11817],[0.97545,0.45740,0.11305],[0.97234,0.44565,0.10797],[0.96904,0.43399,0.10294],[0.96555,0.42241,0.09798],[0.96187,0.41093,0.09310],[0.95801,0.39958,0.08831],[0.95398,0.38836,0.08362],[0.94977,0.37729,0.07905],[0.94538,0.36638,0.07461],[0.94084,0.35566,0.07031],[0.93612,0.34513,0.06616],[0.93125,0.33482,0.06218],[0.92623,0.32473,0.05837],[0.92105,0.31489,0.05475],[0.91572,0.30530,0.05134],[0.91024,0.29599,0.04814],[0.90463,0.28696,0.04516],[0.89888,0.27824,0.04243],[0.89298,0.26981,0.03993],[0.88691,0.26152,0.03753],[0.88066,0.25334,0.03521],[0.87422,0.24526,0.03297],[0.86760,0.23730,0.03082],[0.86079,0.22945,0.02875],[0.85380,0.22170,0.02677],[0.84662,0.21407,0.02487],[0.83926,0.20654,0.02305],[0.83172,0.19912,0.02131],[0.82399,0.19182,0.01966],[0.81608,0.18462,0.01809],[0.80799,0.17753,0.01660],[0.79971,0.17055,0.01520],[0.79125,0.16368,0.01387],[0.78260,0.15693,0.01264],[0.77377,0.15028,0.01148],[0.76476,0.14374,0.01041],[0.75556,0.13731,0.00942],[0.74617,0.13098,0.00851],[0.73661,0.12477,0.00769],[0.72686,0.11867,0.00695],[0.71692,0.11268,0.00629],[0.70680,0.10680,0.00571],[0.69650,0.10102,0.00522],[0.68602,0.09536,0.00481],[0.67535,0.08980,0.00449],[0.66449,0.08436,0.00424],[0.65345,0.07902,0.00408],[0.64223,0.07380,0.00401],[0.63082,0.06868,0.00401],[0.61923,0.06367,0.00410],[0.60746,0.05878,0.00427],[0.59550,0.05399,0.00453],[0.58336,0.04931,0.00486],[0.57103,0.04474,0.00529],[0.55852,0.04028,0.00579],[0.54583,0.03593,0.00638],[0.53295,0.03169,0.00705],[0.51989,0.02756,0.00780],[0.50664,0.02354,0.00863],[0.49321,0.01963,0.00955],[0.47960,0.01583,0.01055]]
N = 256
vals = np.ones((N, 3))
vals[:, 0] = np.linspace(1, turbo_colormap_data[int(.2*256)][0], N)
vals[:, 1] = np.linspace(1, turbo_colormap_data[int(.2*256)][1], N)
vals[:, 2] = np.linspace(1, turbo_colormap_data[int(.2*256)][2], N)
white_to_turbo_first = ListedColormap(vals)
turbo_rest = ListedColormap(turbo_colormap_data[int(.2*256+1):])
white_to_turbo = np.vstack((white_to_turbo_first(np.linspace(0,1,int(.2*256))),
turbo_rest(np.linspace(0,1,int(.8*256)))))
cm.register_cmap('white_to_turbo', cmap=ListedColormap(white_to_turbo))
cm.register_cmap('white_to_turbo_r', cmap=ListedColormap(white_to_turbo[::-1]))
# pressure solutions for hyam & hybm with 1035.24 hPa surface pressure:
plev_CAMSRA = [80.3968,95.9781,113.4212,132.7577,153.9952,177.1176,202.0859,228.8387,257.3558,287.6383,319.6307,353.2256,388.2700,424.5707,461.8996,500.0000,538.5913,577.3754,616.0417,654.2732,691.7515,728.1631,763.2045,796.5879,828.0468,857.3419,884.2660,908.6505,930.3702,949.3494,965.5672,979.0633,989.9435,998.3854,1004.6437,1009.0563,1012.0494] #CAMSRA
plev_CAMSRA_high = [54.6236,66.6233,80.3968,95.9781,113.4212,132.7577,153.9952,177.1176,202.0859,228.8387,257.3558,287.6383,319.6307,353.2256,388.2700,424.5707,461.8996,500.0000,538.5913,577.3754,616.0417,654.2732,691.7515,728.1631,763.2045,796.5879,828.0468,857.3419,884.2660,908.6505,930.3702,949.3494,965.5672,979.0633,989.9435,998.3854,1004.6437,1009.0563,1012.0494]
phalf_CAMSRA_high = [49.0671,60.1802,73.0663,87.7274,104.2288,122.6137,142.9017,165.0886,189.1466,215.0251,242.6523,272.0593,303.2174,336.0439,370.4072,406.1328,443.0086,480.7907,519.2093,557.9734,596.7774,635.306,673.2403,710.2627,746.0635,780.3455,812.8303,843.2634,871.4203,897.1118,920.1893,940.5511,958.1477,972.9868,985.1399,994.7472,1002.0236,1007.2639,1010.8487,1013.25]
plev_ERA5 = [88.5112,93.3527,98.4164,103.7100,109.2417,115.0198,121.0526,127.3487,133.9170,140.7663,147.9058,155.3448,163.0927,171.1591,179.5537,188.2867,197.3679,206.8078,216.6166,226.8050,237.3837,248.3634,259.7553,271.5704,283.8200,296.5155,309.6684,323.2904,337.3932,351.9887,367.0889,382.7058,398.8516,415.5387,432.7792,450.5858,468.9708,487.9470,507.5021,527.5696,548.0312,568.7678,589.6797,610.6646,631.6194,652.4424,673.0352,693.3043,713.1631,732.5325,751.3426,769.5329,787.0528,803.8622,819.9302,835.2358,849.7668,863.5190,876.4957,888.7066,900.1669,910.8965,920.9193,930.2618,938.9532,947.0240,954.5059,961.4311,967.8315,973.7392,979.1852,984.2002,988.8133,993.0527,996.9452,1000.5165,1003.7906,1006.7900,1009.5363,1012.0494] #ERA5
plev_ERA5_high = [59.7721,63.4151,67.1941,71.1187,75.1999,79.4496,83.8816,88.5112,93.3527,98.4164,103.7100,109.2417,115.0198,121.0526,127.3487,133.9170,140.7663,147.9058,155.3448,163.0927,171.1591,179.5537,188.2867,197.3679,206.8078,216.6166,226.8050,237.3837,248.3634,259.7553,271.5704,283.8200,296.5155,309.6684,323.2904,337.3932,351.9887,367.0889,382.7058,398.8516,415.5387,432.7792,450.5858,468.9708,487.9470,507.5021,527.5696,548.0312,568.7678,589.6797,610.6646,631.6194,652.4424,673.0352,693.3043,713.1631,732.5325,751.3426,769.5329,787.0528,803.8622,819.9302,835.2358,849.7668,863.5190,876.4957,888.7066,900.1669,910.8965,920.9193,930.2618,938.9532,947.0240,954.5059,961.4311,967.8315,973.7392,979.1852,984.2002,988.8133,993.0527,996.9452,1000.5165,1003.7906,1006.7900,1009.5363,1012.0494] #ERA5
phalf_ERA5_high = [57.9834,61.5607,65.2695,69.1187,73.1187,77.281,81.6182,86.145,90.8774,95.828,101.0047,106.4153,112.0681,117.9714,124.1337,130.5637,137.2703,144.2624,151.5493,159.1403,167.045,175.2731,183.8344,192.7389,201.9969,211.6186,221.6146,231.9954,242.7719,253.9549,265.5556,277.5852,290.0548,302.9762,316.3607,330.2202,344.5663,359.4111,374.7666,390.645,407.0583,424.019,441.5395,459.6321,478.3096,497.5845,517.4198,537.7195,558.343,579.1926,600.1668,621.1624,642.0764,662.8084,683.262,703.3467,722.9795,742.0855,760.5996,778.4661,795.6396,812.0847,827.7756,842.6959,856.8376,870.2004,882.791,894.6222,905.7116,916.0815,925.7571,934.7666,943.1399,950.9082,958.1037,964.7584,970.9046,976.5737,981.7968,986.6036,991.023,995.0824,998.8081,1002.225,1005.3562,1008.2239,1010.8487,1013.25]
path_CAMSRA = '/dx13/samuelb/trop_folds/'
path_ERA5 = '/dx13/samuelb/trop_folds/'